// Copyright (c) 2019 Presto Labs Pte. Ltd.
// Author: donggu

#include "coin2/base/conversion.h"

#include <doctest.h>

DOCTEST_TEST_CASE("coin2/base/conversion") {
  DOCTEST_SUBCASE("stoll") {
    DOCTEST_CHECK(stoll("0") == 0);
    DOCTEST_CHECK(stoll("1") == 1);
    DOCTEST_CHECK(stoll("-0") == 0);
    DOCTEST_CHECK(stoll("-1") == -1);
    DOCTEST_CHECK(stoll("1234567890123456") == 1234567890123456LL);
    DOCTEST_CHECK(stoll("-1234567890123456") == -1234567890123456LL);
  }

  DOCTEST_SUBCASE("stoull") {
    DOCTEST_CHECK(stoll("0") == 0);
    DOCTEST_CHECK(stoll("1") == 1);
    DOCTEST_CHECK(stoll("1234567890123456") == 1234567890123456LL);
  }

  DOCTEST_SUBCASE("stod") {
    DOCTEST_CHECK(stod("0") == 0);
    DOCTEST_CHECK(stod("0.0") == 0);
    DOCTEST_CHECK(stod("-0") == 0);
    DOCTEST_CHECK(stod("-0.0") == 0);
    DOCTEST_CHECK(stod("1") == 1);
    DOCTEST_CHECK(stod("12345678.56") == 12345678.56);
  }
}
